<?php


namespace app\back\controller;


use app\back\model\BannerModel;
use app\middleware\BackAuth;
use think\facade\Validate;
use app\Request;
use think\response\Json;
use think\validate\ValidateRule;

class Banner
{
    protected $middleware = [BackAuth::class];

    /**添加分类
     * @param Request $request
     * @return Json
     */
    public function add(Request $request)
    {
        // 获取参数
        $input['path'] = $request->post('path');
        $input['sort'] = $request->post('sort');
        $input['pic'] = $request->file('pic');
        // 参数校验
        $validate = Validate::rule([
            'path' => ValidateRule::isRequire(null, '缺少参数'),
            'pic' => ValidateRule::isRequire(null, '缺少参数'),
            'sort'=> function($value,$all) {
                if (in_array($value, [1,2,3,4,5,6])) {
                    return true;
                } else {
                    return '不合法的数据';
                }
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        $input['prefixUrl'] = $request->scheme() . '://' . $request->host();
        return BannerModel::add($input,$request->info);
    }

    /**获取模板列表
     * @param Request $request
     * @return Json
     */
    public function lst(Request $request)
    {
        // 逻辑处理
        return BannerModel::lst($request->info);
    }

    /**修改状态
     * @param Request $request
     * @return Json
     */
    public function changeStatus(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['status'] = $request->post('status');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'status' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ($value == 1 || $value == 2) {
                    return true;
                } else {
                    return '非法数据';
                }
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return BannerModel::changeStatus($input,$request->info);
    }

    /**删除
     * @param Request $request
     * @return Json
     */
    public function delete(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return BannerModel::delete($input,$request->info);
    }

    /**获取单个信息
     * @param Request $request
     * @return Json
     */
    public function getOnly(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return BannerModel::getOnly($input,$request->info);
    }

    /**编辑模板信息
     * @param Request $request
     * @return Json
     */
    public function edit(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['sort'] = $request->post('sort');
        $input['path'] = $request->post('path');
        $input['pic'] = $request->file('pic');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'path' => ValidateRule::isRequire(null, '缺少参数'),
            'sort'=> function($value) {
                if (in_array($value, [1,2,3,4,5,6])) {
                    return true;
                } else {
                    return '不合法的数据';
                }
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        $input['prefixUrl'] = $request->scheme() . '://' . $request->host();
        return BannerModel::edit($input,$request->info);
    }
}